# coding=utf-8
#


import os
from datetime import datetime


def today_datetime():
    """ 返回今天的日期 """
    today = datetime.now()
    return datetime(today.year, today.month, today.day)


def check_pid(pid):
    """
    检查给定的PID是否活着

    Args:
        :params: pid(int): 进程号

    Returns:
        True/False
    """
    try:
        os.kill(pid, 0)
    except OSError:
        return False
    else:
        return True


def format_datetime(dt, fmt=None):
    """
    将给定的datetime对象转换为字符串,方便json序列化处理

    Args:
        :param: dt(datetime): 需要格式化的datetime对象
        :param: fmt(String): 格式，如果不传的话会用默认格式

    Returns:
        dt_str
    """
    if dt:
        if not fmt:
            fmt = "%Y-%m-%d %H:%M:%S"
        return dt.strftime(fmt)
    else:
        return ""


def deformat_datetime(st, only_day=False, default_fmt=None):
    """
    将字符串的时间格式转换成datetime对象的实例

    Args:
        :param: st(String): 需要格式成datetime的时间字符串
        :param: only_day(Boolean): 是否只需要天
        :param: default_fmt(str): datetime格式

    Returns:
        st_str
    """

    if only_day:
        fmt = "%Y-%m-%d"
    else:
        fmt = "%Y-%m-%d %H:%M:%S.%f"

    fmt = default_fmt or fmt
    try:
        return datetime.strptime(st, fmt)
    except:
        fmt = "%Y-%m-%d %H:%M:%S"
        return datetime.strptime(st, fmt)
